summaryrefslogtreecommitdiff
path: root/src-migrate/pages/api/promotion-program/[id].tsx
blob: c509b802e2a079ddcd7c3499960dc41886b7eb5d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
import { NextApiRequest, NextApiResponse } from "next";
import { SolrResponse } from "~/types/solr";

const SOLR_HOST = process.env.SOLR_HOST as string

export default async function handler(req: NextApiRequest, res: NextApiResponse) {
  const id = req.query.id as string

  if (req.method === 'GET') {
    const queryParams = new URLSearchParams({ q: `id:${id}` })
    const response = await fetch(`${SOLR_HOST}/solr/promotion_programs/select?${queryParams.toString()}`)
    const data: SolrResponse<any[]> = await response.json()

    if (data.response.numFound === 0) {
      res.status(404).json({ error: 'Program not found' })
      return
    }

    const program = await map(data.response.docs[0])

    res.status(200).json({ data: program })
  }
}

const map = async (program: any) => {
  const data: any = {}

  data.id = program.id
  data.name = program.name_s
  data.start_time = program.start_time_s
  data.end_time = program.end_time_s
  data.applies_to = program.applies_to_s
  data.time_left = (new Date(data.end_time).getTime() - new Date().getTime()) / 1000

  // const duration = moment.duration(data.time_left, 'seconds')
  // const days = duration.days()
  // const hours = duration.hours()
  // const minutes = duration.minutes()
  // const seconds = duration.seconds()

  return data
}